<template>
  <div>这个是测试页面
    <el-button type="text" @click="doLogout">退出登录</el-button>
  </div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";

@Component
export default class TestPage extends Vue {

  private doLogout() {
    this.$store.dispatch('LOGOUT').then((res: any) => {
      this.$router.push('/login');
    });
  }

  private test() {
    const sourceList: any[] = [];
    const tagetList: any[] = [];

    // 从srcoue中查找prev为空，并添加到target数据
    sourceList.forEach((item: any) => {
      if (!item.prev) tagetList.push([item]);
    });

    // 循环标志位
    let handle: boolean = true;

    // 只要还能循环就一直循环
    while (handle) {
      // 先将循环标志位置为结束
      handle = false;

      // 遍历tagetList
      tagetList.forEach((item: any[]) => {
        // 取节点组中最后一条
        const last: any = item[item.length - 1];

        // 如果当前节点已经找过下级了，就不用在找了
        if (last._handler) return;

        // 将循环标志位置为继续，并将节点处理标志位置为已处理
        last._handler = (handle = true);

        // 从sourceList中查找当前节点的下级节点
        for (const source of sourceList) {
          // 已经找到下级就不用在找了，浪费性能
          if (last.uid === source.prev) {
            item.push(source);

            break;
          }
        }
      });
    }

    // 这里就是转换出来的目标数组了
    console.log(tagetList);
  }
}
</script>
